]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
calendar: Set weekStart from the week-start-day setting
authorEvan Paterakis <evan@geopjr.dev>
Tue, 13 Jan 2026 06:13:49 +0000 (08:13 +0200)
committerFlorian Müllner <fmuellner@gnome.org>
Wed, 14 Jan 2026 09:48:50 +0000 (10:48 +0100)
Honor the new `org.gnome.desktop.calendar.week-start-day` schema key that
determines the starting week day of the calendar

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5040
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4026>

js/ui/calendar.js

index 114b3d351c2e04cce258214088a57901299e5422..d97e3bdd0887ca3485bf8bb234cd297519022ace 100644 (file)
@@ -1,4 +1,5 @@
 import Clutter from 'gi://Clutter';
+import GDesktopEnums from 'gi://GDesktopEnums';
 import Gio from 'gi://Gio';
 import GLib from 'gi://GLib';
 import GObject from 'gi://GObject';
@@ -12,6 +13,7 @@ import {formatDateWithCFormatString} from '../misc/dateUtils.js';
 import {loadInterfaceXML} from '../misc/fileUtils.js';
 
 const SHOW_WEEKDATE_KEY = 'show-weekdate';
+const WEEK_START_DAY_KEY = 'week-start-day';
 
 const NC_ = (context, str) => `${context}\u0004${str}`;
 
@@ -406,9 +408,11 @@ export const Calendar = GObject.registerClass({
     Signals: {'selected-date-changed': {param_types: [GLib.DateTime.$gtype]}},
 }, class Calendar extends St.Widget {
     _init() {
-        this._weekStart = Shell.util_get_week_start();
         this._settings = new Gio.Settings({schema_id: 'org.gnome.desktop.calendar'});
 
+        this._settings.connect(`changed::${WEEK_START_DAY_KEY}`, this._onSettingsChange.bind(this));
+        this._weekStart = this._getWeekStartDay();
+
         this._settings.connect(`changed::${SHOW_WEEKDATE_KEY}`, this._onSettingsChange.bind(this));
         this._useWeekdate = this._settings.get_boolean(SHOW_WEEKDATE_KEY);
 
@@ -478,6 +482,14 @@ export const Calendar = GObject.registerClass({
         this._update();
     }
 
+    _getWeekStartDay() {
+        const weekStartDay = this._settings.get_enum(WEEK_START_DAY_KEY);
+        if (weekStartDay === GDesktopEnums.Weekday.DEFAULT)
+            return Shell.util_get_week_start();
+
+        return weekStartDay % 7;
+    }
+
     _buildHeader() {
         const layout = this.layout_manager;
         const offsetCols = this._useWeekdate ? 1 : 0;
@@ -606,6 +618,7 @@ export const Calendar = GObject.registerClass({
     }
 
     _onSettingsChange() {
+        this._weekStart = this._getWeekStartDay();
         this._useWeekdate = this._settings.get_boolean(SHOW_WEEKDATE_KEY);
         this._buildHeader();
         this._rebuildCalendar();